package jdbchomework;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

/**
 * 结果集源数据， 如果遇到一张表不知道里面的字段的情况，<br>
 * 可以采用下面的方法来处理 用 ResultSetMetaData接口
 * 
 * @author Wangpeihu
 * @team [Never give up]
 * @since JDK1.6(建议)
 * @date 2010-2-9
 */
public class Lab9 {
	public static void main(String[] args) {
		String tableName = "Wangpeihu";
		Connection con = null; // 连接

		// SQL 语句被预编译并且存储在 PreparedStatement 对象中。 然后可以使用此对象高效地多次执行该语句
		PreparedStatement ps = null;
		ResultSet rs = null; // 结果集
		try {
			con = JdbcUtil.getConn();
			String sql = "select * from " + tableName;

			// 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
			ps = con.prepareStatement(sql);

			rs = ps.executeQuery();
			ResultSetMetaData meta = rs.getMetaData(); // 调用ResultSet接口
			int cols = meta.getColumnCount(); // 返回RsultSet结果集中的列数，
			StringBuffer sb = new StringBuffer();
			while (rs.next()) {
				for (int i = 1; i <= cols; i++) {
					sb.append(meta.getColumnName(i) + "=");
					sb.append(rs.getString(i) + "   ");
				}
				sb.append("\n");
			}
			System.out.print(sb.toString());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.close(rs, ps, con);
		}
	}

}
